package Lee_code;

import java.awt.font.NumericShaper;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.LinkedList;
import java.util.List;

/**
 * @author blh
 */
public class Lee_15_623 {

    List<List<Integer>> res = new LinkedList<>();

    public List<List<Integer>> threeSum(int[] nums) {
        // 从小到大排序
        Arrays.sort(nums);
        int len = nums.length;
        for (int i = 0; i < len - 2; i++) {
            // 如果
            if (i > 0) {
                // 如果当前重复了
                if (nums[i] == nums[i - 1]) {
                    continue;
                }
            }
            int target = -nums[i];
            for (int j = i + 1; j < len - 1; j++) {
                if (j > i + 1) {
                    // 如果当前重复了
                    if (nums[j] == nums[j - 1]) {
                        continue;
                    }
                }
                for (int k = j + 1; k < len; k++) {
                    // 如果当前重复了
                    if (k > j + 1) {
                        // 如果当前重复了
                        if (nums[k] == nums[k - 1]) {
                            continue;
                        }
                    }
                    if ((nums[j] + nums[k]) == target) {
                        List<Integer> temp = new ArrayList<>();
                        temp.add(nums[i]);
                        temp.add(nums[j]);
                        temp.add(nums[k]);
                        res.add(temp);
                        break;
                    } else if ((nums[j] + nums[k]) > target) {
                        break;
                    }
                }
            }

        }
        // target是剩下两个数要凑的目标
        return res;
    }

    public static void main(String[] args) {

        Lee_15_623 clas = new Lee_15_623();
        int[] nums = {0, 0, 0};
        clas.threeSum(nums).forEach(System.out::println);
    }
}

